問題 §
Visual Studio.NET 2003を使用し、Managed C++を用いて、NUnit用のテストクラス、テストメソッドを作成した。
しかし、実際にNUnitでテストを実行させると、テストクラスもテストメソッドもNUnitが発見できない。
原因 §
テストクラスを宣言する際に、publicキーワードを忘れている可能性がある。
この場合、以下のようにテストクラスを書き換えればOK。
__gc class T
↓↓↓↓↓↓↓↓
public __gc class T
このような問題が発生する理由 §
通常、C++のクラスにはpublic修飾子を付ける構文がありません。
Managed C++でも、__gcではないクラスには付けられません。
それゆえに、付ける必要がないと思い込んでソースを書いていると、テストクラスもpublic修飾子を付けないで反射的に書いてしまう可能性があります。
一般的に、外部からアクセス可能な__gcクラスを宣言するにはpublic修飾子が必要とされますが、同じ理由によりうっかり書き忘れの可能性があり得ます。
ってか、まさに私がそのようなパターンではまりました (汗。
未来の自分が困らないために、ここにメモっておこう。